// pages/userDiscussDetail/userDiscussDetail.js
import { backImgUrl } from '../../utils/constant';
import { getUserInfo } from '../../utils/userInfo';
import Toast from '@vant/weapp/toast/toast';
import Notify from '/@vant/weapp/notify/notify';
var app = getApp();
Page({

    /**
     * 页面的初始数据
     */
    data: {
        backImg: '',
        gobackIcon: '', // 返回图标距离屏幕顶部的的位置
        active: 0,
        myselfUid: getUserInfo()._id, // 当前我自己的uid，与获取讨论列表里的uid区分开发
        likeArr: [], // 获取点赞列表
        avatar: '',
        nickname: '',
        questionCount: Number, // 发布错题总数
        talkCount: Number, // 发布的讨论总数
        userInfo: Array, // 点击喜欢的总数
        talkArr: Array, // 精选动态
        questionArr: Array, // 近期错题
        userLikeList: Array, // 最近喜欢
        empty1: false,
        empty2: false,
        empty3: false,
        ColorList: app.globalData.ColorList
    },

    // 跳转至讨论详情页
    toCommentPage(e) {
        // point是一个锚点，目的是跳转页面后，显示在指定的位置
        const { tid, nickname, point } = e.currentTarget.dataset;
        wx.navigateTo({
            url: `../../packageC/pages/comment/comment?tid=${tid}&nickname=${nickname}&point=${point}`,
        })
    },

    // 进入题目详情页
    toQuestionDetail(e) {
        console.log(111);
        const { qid } = e.currentTarget.dataset;
        wx.navigateTo({
            url: '../questionDetail/questionDetail?qid=' + qid,
        })
    },

    // 评分更改提示
    onChangeRate() {
        Toast('在这里更改无效哦，请前往错题详情')
    },

    // 点赞和取消点赞
    onClickLike(e) {
        if (getUserInfo()) {
            const that = this;
            // 首先要判断，是点赞还是取消点赞
            const { islike, tid } = e.currentTarget.dataset;
            const uid = getUserInfo()._id;
            const { talkArr, userLikeList } = that.data;
            if (!islike) {
                // 说明要进行点赞操作
                wx.cloud.callFunction({
                    name: 'reqTalkAPI',
                    data: {
                        scene: 'DEFINE_LIKE',
                        tid,
                        uid,
                    }
                }).then(res => {
                    console.log(res);
                    const { update1, update2 } = res.result;
                    if (update1.stats.updated === 1 && update2.stats.updated === 1) {
                        Toast({
                            type: 'success',
                            message: '点赞成功',
                            duration: 1000,
                        });
                        // 点赞成功，要实现页面上实时刷新
                        let newTalkArr = talkArr;
                        let newUserLikeList = userLikeList;
                        newTalkArr.forEach(item => {
                            if (item._id === tid) {
                                item.likeArr.push(uid);
                                newUserLikeList.push(item);
                            }
                        });
                        that.setData({
                            talkArr: [...newTalkArr],
                            userLikeList: [...newUserLikeList],
                        });
                    } else {
                        Toast({
                            type: 'fail',
                            message: '点赞成功',
                            duration: 1000,
                        });
                    }
                })
            } else {
                // 说明要进行取消点赞
                wx.cloud.callFunction({
                    name: 'reqTalkAPI',
                    data: {
                        scene: 'CANCEL_LIKE',
                        tid,
                        uid,
                    }
                }).then(res => {
                    console.log(res);
                    const { update1, update2 } = res.result;
                    if (update1.stats.updated === 1 && update2.stats.updated === 1) {
                        Toast({
                            type: 'success',
                            message: '取消成功',
                            duration: 1000,
                        });
                        // 取消成功，要实现页面上实时刷新
                        let newTalkArr = talkArr;
                        newTalkArr.forEach(item => {
                            if (item._id === tid) {
                                item.likeArr = item.likeArr.filter(uidItem => {
                                    return uidItem !== uid;
                                });
                            };
                        });
                        let newUserLikeList = userLikeList.filter(item => {
                            return item._id !== tid;
                        });
                        that.setData({
                            talkArr: [...newTalkArr],
                            userLikeList: [...newUserLikeList],
                        });
                    } else {
                        Toast({
                            type: 'success',
                            message: '取消失败',
                            duration: 1000,
                        });
                    }
                })
            }
        } else {
            Notify({ type: 'danger', message: '请先登录' });
        };
    },

    // 点赞和取消点赞2
    onClickLike2(e) {
        if (getUserInfo()) {
            const that = this;
            // 首先要判断，是点赞还是取消点赞
            const { islike, tid } = e.currentTarget.dataset;
            const uid = getUserInfo()._id;
            const { userLikeList } = that.data;
            if (!islike) {
                // 说明要进行点赞操作
                wx.cloud.callFunction({
                    name: 'reqTalkAPI',
                    data: {
                        scene: 'DEFINE_LIKE',
                        tid,
                        uid,
                    }
                }).then(res => {
                    console.log(res);
                    const { update1, update2 } = res.result;
                    if (update1.stats.updated === 1 && update2.stats.updated === 1) {
                        Toast({
                            type: 'success',
                            message: '点赞成功',
                            duration: 1000,
                        });
                        // 点赞成功，要实现页面上实时刷新
                        let newTalkArr = userLikeList;
                        newTalkArr.forEach(item => {
                            if (item._id === tid) {
                                item.likeArr.push(uid);
                            }
                        });
                        that.setData({
                            userLikeList: [...newTalkArr],
                        });
                    } else {
                        Toast({
                            type: 'fail',
                            message: '点赞成功',
                            duration: 1000,
                        });
                    }
                })
            } else {
                // 说明要进行取消点赞
                wx.cloud.callFunction({
                    name: 'reqTalkAPI',
                    data: {
                        scene: 'CANCEL_LIKE',
                        tid,
                        uid,
                    }
                }).then(res => {
                    console.log(res);
                    const { update1, update2 } = res.result;
                    if (update1.stats.updated === 1 && update2.stats.updated === 1) {
                        Toast({
                            type: 'success',
                            message: '取消成功',
                            duration: 1000,
                        });
                        // 取消成功，要实现页面上实时刷新
                        let newTalkArr = userLikeList.filter(item => {
                            return item._id !== tid;
                        });
                        that.setData({
                            userLikeList: [...newTalkArr],
                        });
                    } else {
                        Toast({
                            type: 'success',
                            message: '取消失败',
                            duration: 1000,
                        });
                    }
                })
            }
        } else {
            Notify({ type: 'danger', message: '请先登录' });
        };
    },

    // 切换 van-tabs
    onChange(event) {
        // wx.showToast({
        //     title: `切换到标签 ${event.detail.name}`,
        //     icon: 'none',
        // });
    },

    // 返回上一页
    goback() {
        wx.navigateBack({
            delta: 1,
        })
    },

    /**
    * 点击单个图片进行预览
    */
    onPreviewOneImg: function (event) {
        var src = event.currentTarget.dataset.src;//获取data-src
        const urls = [src];
        //图片预览
        wx.previewImage({
            current: src, // 当前显示图片的http链接
            urls,
        })
    },

    /**
   * 点击多个图片进行预览
   */
    onPreviewImg: function (event) {
        var src = event.currentTarget.dataset.src;//获取data-src
        var imgList = event.currentTarget.dataset.list;//获取data-list
        //图片预览
        wx.previewImage({
            current: src, // 当前显示图片的http链接
            urls: imgList // 需要预览的图片http链接列表
        })
    },

    // 获取错题总数量questionCount
    getQuestionCount(uid) {
        wx.cloud.callFunction({
            // 云函数名称
            name: 'reqQuestionAPI',
            // 传给云函数的参数
            data: {
                scene: 'GET_QUESTION_COUNT',
                uid,
            },
        })
            .then(res => {
                this.setData({
                    questionCount: res.result.total,
                })
            })
            .catch(console.error)
    },

    // 获取讨论的总数量talkCount
    getTalkCount(uid) {
        wx.cloud.callFunction({
            // 云函数名称
            name: 'reqTalkAPI',
            // 传给云函数的参数
            data: {
                scene: 'GET_TALK_COUNT',
                uid,
            },
        })
            .then(res => {
                this.setData({
                    talkCount: res.result.total,
                })
            })
            .catch(console.error)
    },

    // 获取用户信息，以及点赞列表信息
    getUser(uid) {
        wx.cloud.callFunction({
            // 云函数名称
            name: 'reqUserAPI',
            // 传给云函数的参数
            data: {
                reqName: 'GET_USER',
                uid,
                phone: '',
                password: '',
            },
        })
            .then(res => {
                // console.log(res);
                this.setData({
                    userInfo: res.result.userInfo.data[0],
                })
            })
            .catch(console.error)
    },

    // 获取精选动态
    getTalkArr(uid) {
        wx.cloud.callFunction({
            // 云函数名称
            name: 'reqTalkAPI',
            // 传给云函数的参数
            data: {
                scene: 'GET_APPOINT_USER_TALK',
                uid,
                skipNum: 0,
                limitNum: 20,
            },
        })
            .then(res => {
                // console.log(res);
                if (res.result.data.length !== 0) {
                    this.setData({
                        talkArr: res.result.data,
                    })
                } else {
                    this.setData({
                        empty1: true,
                    })
                }
            })
            .catch(console.error)
    },

    // 获取近期错题
    getQuestionArr(uid) {
        wx.cloud.callFunction({
            // 云函数名称
            name: 'reqQuestionAPI',
            // 传给云函数的参数
            data: {
                scene: 'GET_APPOINT_USER_QUESTION',
                uid,
                skipNum: 0,
                limitNum: 20,
            },
        })
            .then(res => {
                // console.log(res);
                if (res.result.data.length !== 0) {
                    this.setData({
                        questionArr: res.result.data,
                    })
                } else {
                    this.setData({
                        empty2: true,
                    })
                }
            })
            .catch(console.error)
    },

    // 获取最近赞过
    getUserLikeList(uid) {
        wx.cloud.callFunction({
            // 云函数名称
            name: 'reqTalkAPI',
            // 传给云函数的参数
            data: {
                scene: 'GET_TALK_LIKE_LIST',
                uid,
            },
        })
            .then(res => {
                // console.log(res);
                if (res.result.data.length !== 0) {
                    this.setData({
                        userLikeList: res.result.data,
                    })
                } else {
                    this.setData({
                        empty3: true,
                    })
                }
            })
            .catch(console.error)
    },



    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        const that = this;
        // console.log(options);
        const gobackTop = wx.getMenuButtonBoundingClientRect();
        const { uid, avatar, nickname } = options;
        // 随机选择背景图
        that.setData({
            backImg: backImgUrl[Math.floor(Math.random() * 13)],
            gobackIcon: gobackTop.top + 6,
            avatar,
            nickname,
        }, () => {
            that.getQuestionCount(uid);
            that.getTalkCount(uid);
            that.getUser(uid);
            that.getTalkArr(uid);
            that.getQuestionArr(uid);
            that.getUserLikeList(uid);
        })
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})